$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

C++
C#

Основни алгоритми над серијама елемената

У претходном поглављу описали смо основне итеративне алгоритме у варијанти у којој су примењени на мале серије тако да су имплементирани без коришћења петљи. У овом поглављу ћемо исте алгоритме применити да дуже серије елемената (укључујући и серије чији број елемената није унапред познат). Предуслов за имплементацију таквих алгоритама је коришћење петљи (каже се и циклуса).

Елементи програмског језика

У језику C++ постоје три врсте петљи: while, for и do-while.

Петља while

Општи облик петље while је:

while (uslov)
    telo

У петљи while испитује се вредност логичког израза uslov и уколико је он тачан, извршавају се наредбе задате унутар тела петље. Ако се тело петље састоји од више наредби оне морају бити наведене унутар витичастих заграда. Услов петље while се први пут испитује пре извршавања тела петље. Када се тело изврши услов се поново испитује и поступак се понавља све док се први пут не деси да услов није испуњен. Свако извршавање тела петље називаћемо једном итерацијом петље.

Петља for

Општи облик петље for је:

for (inicijalizacija; uslov; korak)
    telo

Петља for се најчешће користи тако што се променљивој (која се назива бројачка променљива) редом додељују вредности од најмање до највеће и за сваку од тих вредности се извршавају наредбе у оквиру тела петље (ако их је више, морају се навести у витичастим заградама). У делу inicijalizacija се поставља почетна вредност бројачке променљиве (најчешће се на том месту и декларише бројачка променљива), у делу uslov се задаје услов петље који се проверава у свакој итерацији и први пут када није испуњен петља се прекида, док се у делу korak мења вредност бројачке променљиве. На пример, уколико желимо да испишемо све бројеве из интервала [a,b] то можемо да урадимо наредном петљом:

for (int i = a; i <= b; i++)
    cout << i << endl;

Свака петља for може се једноставно изразити помоћу петље while. Иницијализацију je потребно извршити непосредно пре петље while, услов петље остаје исти, док се корак петље додаје као последња наредба у телу петље while. Дакле, претходно исписивање бројева из интервала [a,b] смо могли да реализујемо и на следећи начин:

int i = a;
while (i <= b) {
   cout << i << endl;
   i++;
}

Петља do-while

Поред петље while, постоји и петља do-while, која јој наликује у свему, осим што се услов петље испитује на крају тела петље. Дакле, у овој петљи се тело извршава барем једном, без обзира на то да ли је услов испуњен или не (јер се он испитује на крају тела петље). На пример, наредни блок кода:

int i = a;
do {
   cout << i << endl;
   i++;
} while (i <= b);

би радио исправно ако је \(a \leq b\), међутим у ситуацији када је \(a>b\) решење засновано на for и while петљи не би исписивало ниједан број (што бисмо и очекивали), док би овај блок кода исписивао број \(a\).

Прекиди петље (break и continue)

Некада је у програму потребно написати петљу која се извршава бесконачно пута. Уобичајен начин да се то постигне је коришћењем наредног фрагмента кода:

while (true){
   ...
}

Услов ове while петље је увек испуњен те се она извршава бесконачно пута. Из овакве петље може се изаћи коришћењем наредби break и continue. Наредба break у телу петље прекида извршавање петље. Наредба continue прекида извршавање тела петље (тј. извршавање текуће итерације).

Основни алгоритми над серијама елемената

У претходном поглављу описали смо основне итеративне алгоритме у варијанти у којој су примењени на мале серије тако да су имплементирани без коришћења петљи. У овом поглављу ћемо исте алгоритме применити да дуже серије елемената (укључујући и серије чији број елемената није унапред познат). Предуслов за имплементацију таквих алгоритама је коришћење петљи (каже се и циклуса).

Елементи програмског језика

У језику C# постоје три врсте петљи: while, for и do-while.

Петља while

Општи облик петље while је:

while (uslov)
    telo

У петљи while испитује се вредност логичког израза uslov и уколико је он тачан, извршавају се наредбе задате унутар тела петље. Ако се тело петље састоји од више наредби оне морају бити наведене унутар витичастих заграда. Услов петље while се први пут испитује пре извршавања тела петље. Када се тело изврши услов се поново испитује и поступак се понавља све док се први пут не деси да услов није испуњен. Свако извршавање тела петље називаћемо једном итерацијом петље.

Петља for

Општи облик петље for је:

for (inicijalizacija; uslov; korak)
    telo

Петља for се најчешће користи тако што се променљивој (која се назива бројачка променљива) редом додељују вредности од најмање до највеће и за сваку од тих вредности се извршавају наредбе у оквиру тела петље (ако их је више, морају се навести у витичастим заградама). У делу inicijalizacija се поставља почетна вредност бројачке променљиве (најчешће се на том месту и декларише бројачка променљива), у делу uslov се задаје услов петље који се проверава у свакој итерацији и први пут када није испуњен петља се прекида, док се у делу korak мења вредност бројачке променљиве. На пример, уколико желимо да испишемо све бројеве из интервала [a,b] то можемо да урадимо наредном петљом:

for (int i = a; i <= b; i++)
    Console.WriteLine(i);

Свака петља for може се једноставно изразити помоћу петље while. Иницијализацију je потребно извршити непосредно пре петље while, услов петље остаје исти, док се корак петље додаје као последња наредба у телу петље while. Дакле, претходно исписивање бројева из интервала [a,b] смо могли да реализујемо и на следећи начин:

int i = a;
while (i <= b)
{
   Console.WriteLine(i);
   i++;
}

Петља do-while

Поред петље while, постоји и петља do-while, која јој наликује у свему, осим што се услов петље испитује на крају тела петље. Дакле, у овој петљи се тело извршава барем једном, без обзира на то да ли је услов испуњен или не (јер се он испитује на крају тела петље). На пример, наредни блок кода:

int i = a;
do {
   Console.WriteLine(i);
   i++;
} while (i <= b);

би радио исправно ако је \(a \leq b\), међутим у ситуацији када је \(a>b\) решење засновано на for и while петљи не би исписивало ниједан број (што бисмо и очекивали), док би овај блок кода исписивао број \(a\).

Прекиди петље (break и continue)

Некада је у програму потребно написати петљу која се извршава бесконачно пута. Уобичајен начин да се то постигне је коришћењем наредног фрагмента кода:

while (true){
   ...
}

Услов ове while петље је увек испуњен те се она извршава бесконачно пута. Из овакве петље може се изаћи коришћењем наредби break и continue. Наредба break у телу петље прекида извршавање петље. Наредба continue прекида извршавање тела петље (тј. извршавање текуће итерације).